package com.atguigu.gmall.product.service;

import com.atguigu.gmall.product.model.BaseCategoryView;
import com.atguigu.gmall.product.model.SkuInfo;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;

import java.math.BigDecimal;
import java.util.Map;

public interface SkuManageService {
    /**
     * 新建SkuManageController中提供处理保存SKU方法
     * 新增保存商品SKU信息
     * @param skuInfo
     * @return
     */
    void getSaveSkuInfo(SkuInfo skuInfo);

    /**
     * 根据分类ID查询商品SKU列表
     * @param infoPage
     * @param category3Id
     * @return
     */
    Page<SkuInfo> getList(Page<SkuInfo> infoPage, Long category3Id);


    /**
     * 上架
     * @param skuId
     * @return
     */
    void getOnSale(Long skuId);

    /**
     * 下架   修改 is_sale  即可    工作中尽可能不用is开头做列名
     * onSale  updateById   new 一个 SKUinfo   设置id  和is_sale
     * 或者   LambdaUpdate Query Wrapper,rtod o:后期更新索引库
     * @param skuId
     * @return
     */
    void getCancelSale(Long skuId);

    /**
     * 根据skuId获取SkuInfo
     * @param skuId
     * @return
     */
//    SkuInfo getSkuInfo(Long skuId);

    /**
     * 从数据库中获取商品信息
     * @param skuId
     * @return
     */
    SkuInfo getSkuInfoFromDB(Long skuId);

    /**
     * 根据三级分类id获取分类信息
     * @param category3Id
     * @return
     */
    BaseCategoryView getCategoryView(Long category3Id);

    /**
     * 根据skuId 获取最新的商品价格
     * @param skuId
     * @return
     */
    BigDecimal getSkuPrice(Long skuId);

    /**
     * 根据spuId 获取到销售属性值Id 与skuId 组成的数据集
     * ### 选择顺序切换商品 ${valuesSkuJson}            - 需要新增
     * 选择不同组销售属性,确定skuid
     * @param spuId
     * @return
     */
    Map<String, Object> getSkuValueIdsMap(Long spuId);
}
